/**
\page page_whats_new_v1_0 What's New In %Qtilities v1.0

This page highlights new features and improvements in the v1.0 release, in no particular order.

Table of contents:
- \ref whats_new_v1_0_classes
- \ref whats_new_v1_0_tasking
- \ref whats_new_v1_0_exporting_architecture
- \ref whats_new_v1_0_logging
- \ref whats_new_v1_0_unit_testing
- \ref whats_new_v1_0_extension_system
- \ref whats_new_v1_0_documentation
- \ref whats_new_v1_0_properties
- \ref whats_new_v1_0_definitions
- \ref whats_new_v1_0_debug
- \ref whats_new_v1_0_mode_management
- \ref whats_new_v1_0_improved_project_structure
- \ref whats_new_v1_0_bugs

Alternatively have a look at the <a href="https://github.com/JPNaude/Qtilities/blob/v1.0/Changelog.txt">detailed change log</a>.

\section whats_new_v1_0_classes New Classes

%Qtilities v1.0 provides the following new classes which extends the previous functionality of the libraries as well as some completely new classes:

- Qtilities::Core::Interfaces::IIterator
- Qtilities::Core::Interfaces::IConstIterator
- Qtilities::Core::SubjectIterator
- Qtilities::Core::ConstSubjectIterator
- Qtilities::Core::TreeIterator
- Qtilities::Core::FileUtils
- Qtilities::Core::ObserverDotWriter
- Qtilities::Core::QtilitiesFileInfo
- Qtilities::Core::VersionInformation
- Qtilities::Core::VersionNumber
- Qtilities::CoreGui::ObjectDynamicPropertyBrowser
- Qtilities::CoreGui::StringListWidget
- Qtilities::CoreGui::CodeEditorWidget
- Qtilities::CoreGui::Interfaces::INamingPolicyDialog
- Qtilities::ProjectManagement::CodeEditorProjectItemWrapper
- Qtilities::Testing::TestFrontend
- Qtilities::Testing::Interfaces::ITestable

The following new classes adds \ref whats_new_v1_0_tasking capabilities to the %Qtilities libraries:

- Qtilities::Core::Task
- Qtilities::Core::Interfaces::ITask
- Qtilities::Core::TaskManager
- Qtilities::CoreGui::SingleTaskWidget
- Qtilities::CoreGui::TaskSummaryWidget
- Qtilities::CoreGui::TaskManagerGui
- Qtilities::Core::Interfaces::ITaskContainer
- Qtilities::Core::QtilitiesProcess

\section whats_new_v1_0_tasking Tasking

From v1.0 %Qtilities has tasking build into its core functionality and provides classes to use with your own tasks. See the new \ref page_tasking article for more information.

\section whats_new_v1_0_exporting_architecture Revamped Exporting Architecture

The exporting architecture was revamped and improved significantly:
- The Qtilities::Core::Interfaces::IExportable interface was improved and is now much easier to implement. The interface's documentation was also rewritten and much improved.
- All %Qtilities classes which implements \p IExportable will be backward compatible from v1.0 onwards for both binary and XML exports. This
includes session related files such as logger configurations, shortcut configurations, projects etc.
- The export formats used by %Qtilities is now properly documented in \ref page_serializing_overview.
- A new concept of a global application export versioning was added which allows applications that use %Qtilities to easily make data formats it use backward compatible with older versions of the applications.
- A proper set of unit tests was added to test all classes that implements \p IExportable. Many, many bugs have been found in these tests and
they were all fixed.
- Many classes have improved export interfaces, for example \p ObserverRelationalTable and \p RelationalTableEntry now supports XML exports.
- A new example called \p ExportingExample was added to the \p QtilitiesExamples project which clearly shows how to implement \p IExportable for your own classes.
- All classes that supports binary exports now has their stream operators overloaded as well.

\section whats_new_v1_0_logging Improved Logging

- The logging library was improved and now provides a new concept of message contexts. A message context defines the origin of a message (for
example you can have a priority message, engine specific message etc.) and engines can now specify which contexts they are interested in.
- The \p LoggerGui class now has the ability to create temporary log widgets which can be used to display the status of a intermediate
process.

\section whats_new_v1_0_unit_testing New Testing Library

A new library called Testing was added. The libraries has two goals:
- It provides two new classes which can be used by developers to simplify their unit testing.
- It provides a set of tests to test classes in the different %Qtilities modules.

The new \p QTILITIES_TESTING define in \p Qtilities.pri allows you to build the Testing module with the %Qtilities test classes in it, thus without it you can use the library for your own custom tests.

The Qtilities::Testing::TestFrontend class allows you to run any tests implementing Qtilities::Testing::Interfaces::ITestable. Below is an example of the test frontent with a number of %Qtilities tests registered in it:

\image html class_testfrontend_screenshot.jpg "Test Frontend With Some Tests"

\section whats_new_v1_0_extension_system Improved Extension System

The extension system was now supports the concept of plugin configuration sets which allows you to deploy custom configuration sets. The \ref page_extension_system article has a new section on this topic. The debug plugin now also has nice configuration set management
features.

\section whats_new_v1_0_documentation Improved Documentation

The %Qtilities documentation was again improved and an effort was made to improve the documentation on a class level. Many classes have been properly documented now and overall many small fixes and improvements were made.

\section whats_new_v1_0_properties Improved Property Management

Since %Qtilities uses dynamic properties in many places, this is process was improved significantly and the classes used were changed and improved as well. See Qtilities::Core::QtilitiesProperty for more information.

\section whats_new_v1_0_definitions All Constants Now Defined In A Constant Way

In previous versions all constant definitions made throughout %Qtilities was done in a random way. Everything is now done in a unified way where all reserved %Qtilities defines starts with \p qti_

The defines are also grouped into proper categories now by the way they start:
- \p qti_def_* defines any general definition made.
- \p qti_prop_* defines all %Qtilities properties.
- \p qti_action_* defines all actions defined in %Qtilities.
- \p qti_icon_* defines all icons defined in %Qtilities.

\section whats_new_v1_0_debug Much Improved Debug Plugin

The debug plugin was improved significantly and is now really usefull. A new article was added to the documentation which provides a detailed overview of the plugin: \ref page_debugging. Lastly, the <a href="http://sourceforge.net/projects/conanforqt/">Conan for Qt</a> libary is now fully integrated with the debug plugin, thus it allows you to analyze signal and slot connections directly in the plugin.

Below is a screenshot of the new plugin in action:

\image html debugging_object_pool_tab.jpg "Improved Debug Plugin"

\section whats_new_v1_0_mode_management Improved Mode Management

Mode management was much improved and also looks a lot nicer. For example:

\image html class_qtilitiesmainwindow_modes_top.jpg "Main Window With Modes At The Top"

\section whats_new_v1_0_improved_project_structure Improved Project Structure and Build Instructions

The project structure has been improved and all dependency configuration now happens in Dependencies.pri. Detailed build instructions have been added due to contributions by Carel Combrink.

\section whats_new_v1_0_bugs Bug Fixes, And More Bug Fixes

%Qtlities v1.0 has fixed tons of bugs which were everywhere across the library. Alongside this more than 100 crashes have been fixed.

Many many improvements have been made all over the different libraries and the project is getting to a state where it is ready for use in big, production applications.

*/
